--CREATE PROCEDURE sp_RepRecepcion_Detalle

-- Parametros
declare
@SeleccionFechas int ,	-- 1 = NO , 2 = SI
@FechaDesde varchar(30) ,
@FechaHasta varchar(30) ,
@Expediente varchar(20) ,
@Num_Copia_Chr varchar(5) , 
@Consecutivo int ,
@Resolucion varchar(20) , 
@Oficio varchar(50) , 
@Procurador int , 
@Area int , 
@ZonaJuzgado int ,
@SubZonaJuzgado int ,
@ConsecutivoJuzgado int ,
@Parte varchar(200) 

set @SeleccionFechas = 1 
set @FechaDesde = '2009-09-25'  
set @FechaHasta = '2009-09-25'  
set @Expediente = ''  
set @Num_Copia_Chr = ''  
set @Consecutivo = 0  
set @Resolucion = ''  
set @Oficio = ''  
set @Procurador = -1  
set @Area = -1  
set @ZonaJuzgado = -1  
set @SubZonaJuzgado = -1  
set @ConsecutivoJuzgado = -1  
set @Parte = 'sequeira enriquez maria luisa' 

--AS

DECLARE
@Num_Copia int , 
@FechaInicial datetime ,
@FechaFinal datetime  
SET @Num_Copia = CONVERT( SMALLINT , @Num_Copia_Chr ) 
SET @FechaInicial = CONVERT( DATETIME , LEFT( @FechaDesde , 10 ) + ' 00:00:00' , 121 ) 
SET @FechaFinal   = CONVERT( DATETIME , LEFT( @FechaHasta , 10 ) + ' 23:59:00' , 121 ) 

SELECT 	f.fecha_pgr , 
	f.Num_Copia , 
	f.Consecutivo , 
	f.Resolucion , 
	f.NunOficio , 
	e.Expediente , 
	f.Con_Copias_Chk , 
	f.CORTEL_Chk , 
	f.Transmitida_Chk , 
	x.Procurador , 
	v.nombre_procurador , 
	Parte = LEFT( 
		CASE
		WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN ''
		WHEN LEN( COALESCE( e.Promovente , '' ) ) = 0 AND LEN( COALESCE( e.Parte , '' ) ) > 0 THEN E.Parte
		WHEN LEN( COALESCE( e.Promovente , '' ) ) > 0 AND LEN( COALESCE( e.Parte , '' ) ) = 0 THEN E.Promovente
		ELSE e.Promovente + ' CONTRA ' + e.Parte
		END 
		, 40 ) , 
	e.Juzgado , 
	Nombre_Juzgado = j.Nombre , 
	Actualizado_Por = v2.Nombre_Funcionario 
FROM 	Exp_Fecha AS f 
	INNER JOIN Expediente AS e  
		ON e.expediente = f.expediente 
	INNER JOIN Procuradores_X_Expediente AS x 
		ON e.expediente = x.expediente AND x.primario_chk = '1' 
	INNER JOIN View_Nombre_Procuradores v
		ON x.procurador = v.procurador 
	INNER JOIN Juzgados AS j 
		ON e.juzgado = j.juzgado 
	INNER JOIN Area AS a 
		ON e.area = a.area 
	INNER JOIN View_Funcionarios AS v2 
		ON v2.Cedula = f.Cedula_Usuario 
WHERE 	f.Fecha_PGR BETWEEN CASE @SeleccionFechas
				WHEN 1 THEN f.Fecha_PGR
				ELSE @FechaInicial
				END
			AND CASE @SeleccionFechas
				WHEN 1 THEN f.Fecha_PGR
				ELSE @FechaFinal
				END

	-- el Expediente es buscado tanto en la columna Expediente como en la columna Equivale_A por acumulacion de expedientes
	AND (
		e.expediente LIKE CASE LEN( @Expediente ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN e.expediente
					ELSE '%' + @Expediente + '%'
					END
		OR
		e.Equivale_A LIKE CASE LEN( @Expediente ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN e.Equivale_A 
					ELSE '%' + @Expediente + '%'
					END
	     )

	AND f.Num_Copia = CASE LEN( @Num_Copia_Chr ) 
				WHEN 0 THEN f.Num_Copia 
				ELSE @Num_Copia
				END

	AND f.Consecutivo = CASE @Consecutivo
				WHEN 0 THEN f.Consecutivo 
				ELSE @Consecutivo
				END

	AND f.Resolucion LIKE CASE LEN( @Resolucion )
					WHEN 0 THEN f.Resolucion 
					ELSE '%' + @Resolucion  + '%'
					END

	AND f.NunOficio LIKE CASE LEN( @Oficio )
					WHEN 0 THEN f.NunOficio 
					ELSE '%' + @Oficio  + '%'
					END

	AND x.Procurador = CASE @Procurador
					WHEN -1 THEN x.Procurador 
					ELSE @Procurador
					END

	AND e.area = CASE @Area
			WHEN -1 THEN e.area 
			ELSE @Area
			END

	AND e.juzgado - (e.juzgado % 10000) = 
			CASE @ZonaJuzgado
				WHEN -1 THEN e.juzgado - (e.juzgado % 10000) 
				ELSE @ZonaJuzgado * 10000
				END

	AND (e.juzgado % 10000)/100 = 
			CASE @SubZonaJuzgado
				WHEN -1 THEN (e.juzgado % 10000)/100 
				ELSE @SubZonaJuzgado 
				END

	AND (e.juzgado % 10000) % 100 = 
			CASE @ConsecutivoJuzgado
				WHEN -1 THEN (e.juzgado % 10000) % 100 
				ELSE @ConsecutivoJuzgado
				END

	AND (
		e.Promovente LIKE CASE LEN( @Parte ) -- blancos no son tomados como valor significativo
					WHEN 0 THEN e.Promovente 
					ELSE '%' + @Parte + '%'
					END
		OR
		e.parte LIKE CASE LEN( @Parte ) -- blancos no son tomados como valor significativo
				WHEN 0 THEN e.parte
				ELSE '%' + @Parte + '%'
				END
	     )
ORDER BY f.fecha_pgr DESC, 
	Nombre_Procurador , 
	Consecutivo DESC
